//思路：
// 原地操作考虑快慢指针，第一个指针从前往后，第二个指针从后往前，第一个==val,第二个！=val交换 移动，最后慢指针的值为个数
//
class Solution {
    //解法一
    public static int removeElement(int[] nums, int val) {
     int i=0,j=nums.length-1;
        while (i<=j) {
            while(nums[i]!=val&&i<=j) i++;
            while(nums[j]==val&&i<=j) j--;
            if (i<j) {
                int temp=nums[i];
                nums[i]=nums[j];
                nums[j]=temp;
                i++;
                j--;
            } else{
                break;
            }
        }
        return i;
    }
    //解法二 fast指的的是新数组所需要的元素，low指的是慢指针需要更新的元素
    public static int removeElement1(int[] nums, int val) {
        int fast,low=0;
        for( fast=0;fast< nums.length;fast++){
            if(nums[fast]!=val){
                nums[low]=nums[fast];
                low++;
            }
        }
        return low;

    }
}